package guoanmaker.provider.helper.common.util;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;
import java.net.URLEncoder;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.List;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import org.omg.CORBA.PUBLIC_MEMBER;

import guoanmaker.provider.helper.common.abstractobj.ApiController;

/**
 * 
* @ClassName: SystemHelper 
* @Description: 字符,日期,数字等处理
* @author Yvonne_MGL
* @date 2017年7月11日 下午7:43:51 
*  
 */
public class SystemHelper {

	/**
	 * 
	* @Description: 判断一个字符串是否全部为数字 
	* @param @param str
	* @param @return
	* @author Yvonne_MGL 
	* @date 2017年7月11日 下午7:43:47     
	* @return boolean    
	* @throws 
	 */
	public static boolean isNumeric(String str) {
		Pattern pattern = Pattern.compile("[0-9]*");
		Matcher isNum = pattern.matcher(str);
		if (!isNum.matches()) {
			return false;
		}
		return true;
	}
	
	/**
	 * 
	* @Description: 返回值结果 
	* @param json 接口返回值
	* @param @return
	* @param @throws Exception
	* @author Yvonne_MGL 
	* @date 2017年8月8日 上午9:30:54     
	* @return PayInfo    
	* @throws 
	 */
	public static String httpGetHelper(String url, String param) {
		String result = "";// 访问返回结果
		BufferedReader read = null;// 读取访问结果

		try {
			// 创建url
			URL realurl = new URL(url+"?"+param);
			// 打开连接
			URLConnection connection = realurl.openConnection();
			// 设置通用的请求属性
			connection.setRequestProperty("accept", "*/*");
			connection.setRequestProperty("connection", "Keep-Alive");
			connection.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
			// 建立连接
			connection.connect();
			// 获取所有响应头字段
			Map<String, List<String>> map = connection.getHeaderFields();
			// 遍历所有的响应头字段，获取到cookies等
			for (String key : map.keySet()) {
				System.out.println(key + "--->" + map.get(key));
			}
			// 定义 BufferedReader输入流来读取URL的响应
			read = new BufferedReader(new InputStreamReader(connection.getInputStream(), "UTF-8"));
			String line;// 循环读取
			while ((line = read.readLine()) != null) {
				result += line;
			}
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			if (read != null) {// 关闭流
				try {
					read.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}
		return result;
	}
	
	/**
	 * 
	* @Description: 查询某个时间10分钟前的时间 
	* @param @return
	* @param @throws Exception
	* @author Yvonne_MGL 
	* @date 2017年8月8日 下午6:39:54     
	* @return Date    
	* @throws 
	 */
	public static String getLess10Min(){
		Calendar calendar = Calendar.getInstance();
	    calendar.set(Calendar.MINUTE, calendar.get(Calendar.MINUTE) - 10);
	    SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
	    return sdf.format(calendar.getTime());
	}
	
	/**
	 * 
	* @Description: 查询某个时间24小时前的时间 
	* @param @return
	* @param @throws Exception
	* @author Yvonne_MGL 
	* @date 2017年8月8日 下午6:39:54     
	* @return Date    
	* @throws 
	 */
	public static Date getLess24Hour(){
		Calendar calendar = Calendar.getInstance();
	    calendar.set(Calendar.HOUR, calendar.get(Calendar.HOUR) - 24);
	    return calendar.getTime();
	}
	/**
	 * 
	* @Description: 发送短信 
	* @param @return
	* @param @throws Exception
	* @author Yvonne_MGL 
	* @date 2017年8月28日 上午10:39:54     
	* @return Date    
	* @throws 
	 */
	public static String SendGET(String url, String param) {
		String result = "";// 访问返回结果
		BufferedReader read = null;// 读取访问结果

		try {
			// 创建url
			URL realurl = new URL(url + "?" + param);
			// 打开连接
			URLConnection connection = realurl.openConnection();
			// 设置通用的请求属性
			connection.setRequestProperty("accept", "*/*");
			connection.setRequestProperty("connection", "Keep-Alive");
			connection.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
			// 建立连接
			connection.connect();
			// 获取所有响应头字段
			Map<String, List<String>> map = connection.getHeaderFields();
			// 遍历所有的响应头字段，获取到cookies等
			for (String key : map.keySet()) {
				System.out.println(key + "--->" + map.get(key));
			}
			// 定义 BufferedReader输入流来读取URL的响应
			read = new BufferedReader(new InputStreamReader(connection.getInputStream(), "gb2312"));
			String line;// 循环读取
			while ((line = read.readLine()) != null) {
				result += line;
			}
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			if (read != null) {// 关闭流
				try {
					read.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}

		return result;
	}
	
	/**
	 * 
	* @Description: 发送短信 
	* @param telephone 手机号
	* @param message 信息内容
	* @param @throws Exception
	* @author Yvonne_MGL 
	* @date 2017年8月28日 上午9:39:30     
	* @return void    
	* @throws 
	 */
	public static void sendMessage(String telephone,String message) throws Exception{
		String url = ApiController.SMS_URL;
		String username = ApiController.SMS_USERNAME;
		String password = ApiController.SMS_PASSWORD;
		String epid = ApiController.SMS_EPID;
		String param = "";
		param = "username=" + username + "&password=" + password + "&phone=" + telephone + "&epid=" + epid
				+ "&linkid=&subcode=" + "&message=" + URLEncoder.encode(message, "gb2312");
		SystemHelper.SendGET(url, param);
	}
	
	/**
	 * 
	* @Description: 获取一周前的时间 
	* @param @return
	* @author Yvonne_MGL 
	* @date 2017年8月29日 下午9:16:11     
	* @return String    
	* @throws 
	 */
	public static String getLess7Day(){
		Calendar calendar = Calendar.getInstance();
	    calendar.set(Calendar.DATE, calendar.get(Calendar.DATE) - 7);
	    SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
	    return sdf.format(calendar.getTime());
	}
	
	/**
	 * 
	* @Description: 获取 month 个月以前的时间
	* @param month
	* @param @return
	* @author Yvonne_MGL 
	* @date 2017年8月29日 下午9:18:16     
	* @return String    
	* @throws 
	 */
	public static String getLessMonth(int month){
		Calendar calendar = Calendar.getInstance();
	    calendar.set(Calendar.MONTH, calendar.get(Calendar.MONTH) - month);
	    SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
	    return sdf.format(calendar.getTime());
	}
	
	/**
	 * 
	* @Description: 获取工单编号同用方法 GD+时间  精确到秒 
	* @param @return
	* @author Yvonne_MGL 
	* @date 2017年9月5日 下午2:22:24     
	* @return String    
	* @throws 
	 */
	public static String getWorkOrderNumber(){
		String number="GD";
		SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		String time=sdf.format(new Date());
		time=time.replaceAll("-", "").replaceAll(":", "").replaceAll(" ", "");
		return number+time;
	}
}
